// request/request.js
import {BASE_URL} from './base'
import {login} from '@/untils/common'
// 使用promise封装 一个对象做参数并设置默认值
// 登录状态标记
let isRedirectingToLogin = false;
// 全局未登录处理函数
const handleLoginError = () => {
  if (!isRedirectingToLogin) {
    isRedirectingToLogin = true;
    // login().then(()=>{
    // }).catch(()=>{
      // console.log(2221);
      uni.navigateTo({
        url: `/pages/login/index`,
        success: () => {
          isRedirectingToLogin = false;
        }
      });
      // uni.showToast({
      //   title: res.data.msg,
      //   icon: "none",
      // });
    // })
    // uni.redirectTo({
    //   url: '/pages/login/index',
    //   success: () => {
    //     isRedirectingToLogin = false;
    //   }
    // });
  }
};
export default function request({
  url = "",
  method = "GET",
  data = {},
  dataType = "json",
  header = {},
  isLogin = false,
}) {
  // 返回promise实例 在使用时就可以使用async await
  return new Promise((resolve, reject) => {
    wx.request({
      url: BASE_URL + url,
      data,
      dataType,
      method,
      timeout: 50000,
      header: {
        ...header,
        shopId:uni.getStorageSync("store").id || uni.getStorageSync("storeId"),
        "tenant-id":123,
        'X-Access-Token': uni.getStorageSync("accessToken"),
        'Authorization': `Bearer ${uni.getStorageSync("accessToken")}`,
        'X-BILL-LAT':uni.getStorageSync('latAndLong')?.latitude,
        'X-BILL-LON':uni.getStorageSync('latAndLong')?.longitude,
        terminal:1,
      },
      success: (res) => {
        console.log(res);
        // 根据接口说明 定义业务失败的处理
        console.log(res.data.code == 401 && !isLogin);
        if (res.data.code == 401 && !isLogin) {
          handleLoginError();
          // login().then(()=>{
          // }).catch(()=>{
          //   console.log(2221);
          //   uni.navigateTo({
          //     url: `/pages/login/index`,
          //   });
          //   uni.showToast({
          //     title: res.data.msg,
          //     icon: "none",
          //   });
          // })
          
        }
        if (res.data.code == 200 || res.data.code == 0) {
          console.log(url);
          resolve(res.data.data);

        } else {
          if(!isLogin){
            wx.showToast({
              title: res.data.msg || "请求数据出错",
              icon:'none'
            });
          }
          // 在请求处 通过判断返回的这个false 是业务逻辑不往下跑
          reject(res.data);
          return;
        }

      },
      fail: (err) => {
        reject(err);
      },
    });
  });
}